home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / tclStruct1.2.tar.gz / tclStruct1.2.tar / tclStruct1.2 / INTRO < prev    next >
Text File  |  1995-10-17  |  3KB  |  92 lines

  1.             tclStruct
  2.     A Tcl extension to provide access to 'C' data structures
  3.         by Matthew.Costello@SanDiegoCA.ATTGIS.COM
  4.  
  5. This file provides a quick introduction to the tclStruct package,
  6. a Tcl extension for accessing complex data structures.  tclStruct
  7. is known to work with Tcl7.4 and Tcl7.5.  With Tcl7.5 it is a
  8. loadable extension and so may be used with the tclsh shell as well
  9. as any enhanced Tcl shells.
  10.  
  11. tclStruct provides for the definition and layout of 'C' or or
  12. other binary structures, the allocation and deallocation of
  13. memory objects, the construction and use of typed pointers,
  14. and access to binary data using Tcl's associative arrays.
  15.  
  16.  
  17. Commands
  18. --------
  19. tclStruct provides the following built-in commands:
  20.  
  21.   struct_typedef    Define a type.
  22.   struct_untypedef    Remove an unused type definition.
  23.   struct_new        Allocate an object.
  24.   struct_info        Retrieve information about types and objects.
  25.   struct_copy        Binary (fast) copy of objects.
  26.   struct_read        Binary read of an object from a file.
  27.   struct_write        Binary write of an object to a file.
  28.  
  29. It also provides the following commands written in Tcl.
  30.   struct_hexdump    Hexadecimal and ASCII dump of an object.
  31.   struct_show        Print the contents of any object.
  32.  
  33.  
  34. Example
  35. -------
  36. The following example gives a small sample of what tclStruct
  37. can be used for.
  38.  
  39.   struct qu {
  40.     int index;
  41.     struct spez {
  42.        char name [20];
  43.        char text[20];
  44.        int kind;
  45.     } spez[10],
  46.       klass[10];
  47.   }
  48.  
  49. The declaration for the above structure is created using
  50. the struct_typedef command:
  51.  
  52.   struct_typedef spez {struct
  53.     {char*20 name}
  54.     {char*20 text}
  55.     {int kind}
  56.   }
  57.   struct_typedef qu {struct
  58.     {int index}
  59.     {spez*10 spez}
  60.     {spez*10 klass}
  61.   }
  62.  
  63. To create the structure the struct_new command is used.  It optionally
  64. takes a pointer to an existing C structure.
  65.  
  66.   struct_new frob qu
  67.  
  68. Access to members of the structure are done using Tcl arrays.
  69.   set frob(index) 1
  70.   set frob(spez.0.kind) 2
  71.   set frob(spez.4.name.0) 'K'
  72.  
  73. Access to aggregate members is also possible.
  74.   set frob(spez.4.name) 'The Name'
  75.   set frob(spez.4) { bird "has wings" 6 }
  76.  
  77. Typecasts are also possible.  For debugging the content of structures
  78. it always possible to typecast the whole structure to an array of hex
  79. characters ...
  80.  
  81.   puts $frob(_hex_)
  82.  
  83.  
  84. The Package
  85. -----------
  86. The tclStruct package includes complete manual pages and examples.
  87. It also includes a test suite.  tclStruct uses the GNU autoconf package.
  88.  
  89. The tclStruct package is freely available under the same licensing
  90. terms as Tcl.
  91.  
  92.